'use strict'
// 导入node.js的path模块
const path = require('path')
// resolve函数，目的是将相对路径变成绝对路径
function resolve (dir) {
  return path.join(__dirname, dir)
}
let cdn = { css: [], js: [] }
// 通过环境变量 来区分是否使用cdn
const isProd = process.env.NODE_ENV === 'production' // 判断是否是生产环境
let externals = {}
if (isProd) {
  // 如果是生产环境 就排除打包 否则不排除
  externals = {
    // key(包名) / value(这个值 是 需要在CDN中获取js, 相当于 获取的js中 的该包的全局的对象的名字)
    // 'vue': 'Vue', // 后面的名字不能随便起 应该是 js中的全局对象名
  }
  cdn = {
    // 放置css文件目录
    css: [

    ],
    // 放置js文件目录
    js: [

    ]
  }
}

// 网站标题
const name = 'vue-mobile' // page title
// 开发环境下运行端口号
const port = process.env.port || process.env.npm_config_port || 9528 // dev port

module.exports = {
  // 打包之后文件引用路径关系
  publicPath: isProd ? './' : '/',
  // 打包输出目录
  outputDir: 'dist',
  // 静态文件目录
  assetsDir: 'static',
  // 判断是否保存就校验
  lintOnSave: process.env.NODE_ENV === 'development',
  // 关闭打包时候的map文件
  productionSourceMap: false,
  // 服务器相关配置
  devServer: {
    port: port, // 端口号
    open: true, // 是否自动打开浏览器
    overlay: {
      warnings: false,
      errors: true
    }
    // 代理跨域的配置
    // proxy: {
    //   '/api': {
    //     // target: 'http://ihrm-java.itheima.net/', // 跨域请求的地址
    //     target: 'http://192.168.17.39:3000/', // 跨域请求的地址
    //     changeOrigin: true // 只有这个值为true的情况下 才表示开启跨域
    //   }
    // },
  },
  configureWebpack: {
    // 配置网站名称
    name: name,
    // 解析处理，碰到@符号就替换成src
    resolve: {
      alias: {
        '@': resolve('src')
      }
    },
    // webpack打包排除项目
    externals
  },
  // webpack的配置
  chainWebpack (config) {
    // 设置cdn资源到index.html模板中
    config.plugin('html').tap(args => {
      args[0].cdn = cdn
      return args
    })
  }
}
